/**
 * Vue组件信息
 */
export interface VueComponent {
  // 组件ID（基于文件路径）
  id: string;
  // 组件名称
  name: string;
  // 组件描述
  description: string;
  // 组件文件路径
  filePath: string;
  // 组件属性
  props: ComponentProp[];
  // 组件事件
  events: ComponentEvent[];
  // 组件插槽
  slots: ComponentSlot[];
  // 组件方法
  methods: ComponentMethod[];
  // 创建时间
  createdAt: string;
  // 最后更新时间
  updatedAt: string;
  // Vue版本 (2 或 3)
  vueVersion: '2' | '3';
  // 组件示例代码（可选）
  example?: string;
}

/**
 * 组件属性信息
 */
export interface ComponentProp {
  // 属性名
  name: string;
  // 类型
  type: string;
  // 描述
  description: string;
  // 默认值（可选）
  defaultValue?: string;
  // 是否必填
  required: boolean;
  // 可选值（针对枚举类型）
  values?: string[];
}

/**
 * 组件事件信息
 */
export interface ComponentEvent {
  // 事件名
  name: string;
  // 描述
  description: string;
  // 事件参数
  arguments: ComponentEventArgument[];
}

/**
 * 组件事件参数
 */
export interface ComponentEventArgument {
  // 参数名
  name: string;
  // 类型
  type: string;
  // 描述
  description: string;
}

/**
 * 组件插槽信息
 */
export interface ComponentSlot {
  // 插槽名
  name: string;
  // 描述
  description: string;
  // 绑定变量
  bindings: ComponentSlotBinding[];
}

/**
 * 组件插槽绑定变量
 */
export interface ComponentSlotBinding {
  // 变量名
  name: string;
  // 类型
  type: string;
  // 描述
  description: string;
}

/**
 * 组件方法信息
 */
export interface ComponentMethod {
  // 方法名
  name: string;
  // 描述
  description: string;
  // 参数
  params: ComponentMethodParam[];
  // 返回值
  returns?: ComponentMethodReturn;
}

/**
 * 组件方法参数
 */
export interface ComponentMethodParam {
  // 参数名
  name: string;
  // 类型
  type: string;
  // 描述
  description: string;
  // 默认值（可选）
  defaultValue?: string;
}

/**
 * 组件方法返回值
 */
export interface ComponentMethodReturn {
  // 返回类型
  type: string;
  // 返回值描述
  description: string;
} 